package com.jml.排序;

/*
	*
	*
	*
	*
	*
	*
第一趟排序： 原始数据：5  2  8  4  9  1

最小数据1，把1放在首位，也就是1和5互换位置，

排序结果：1  2  8  4  9  5

-------------------------------------------------------

第二趟排序：

第1以外的数据{2  8  4  9  5}进行比较，2最小，

排序结果：1  2  8  4  9  5

-------------------------------------------------------

第三趟排序：

除1、2以外的数据{8  4  9  5}进行比较，4最小，8和4交换

排序结果：1  2  4  8  9  5

-------------------------------------------------------

第四趟排序：

除第1、2、4以外的其他数据{8  9  5}进行比较，5最小，8和5交换

排序结果：1  2  4  5  9  8

-------------------------------------------------------

第五趟排序：

除第1、2、4、5以外的其他数据{9  8}进行比较，8最小，8和9交换

排序结果：1  2  4  5  8  9*/

public class 选择排序 {

	public static void main(String[] args) {
		int[] arr={1,3,2,45,65,33,12};
		System.out.println("交换之前：");
		for(int num:arr){
			System.out.print(num+" ");
		}
		if (arr == null || arr.length < 2) {
			return;
		}
		//选择排序的优化
		for(int i = 0; i < arr.length - 1; i++) { // 做第i趟排序
			int k = i;
			for(int j = k + 1; j < arr.length; j++){ // 选最小的记录
				if(arr[j] < arr[k]){
					k = j; //记下目前找到的最小值所在的位置
				}
			}
			//在内层循环结束，也就是找到本轮循环的最小的数以后，再进行交换
			if(i != k){  //交换a[i]和a[k]
				int temp = arr[i];
				arr[i] = arr[k];
				arr[k] = temp;
			}
		}
		System.out.println();
		System.out.println("交换后：");
		for(int num:arr){
			System.out.print(num+" ");
		}
	}

}